package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
import pessoas.model.Pessoa;
import pessoas.collection.Pessoas;
import pessoas.interfaces.IConfiguraViewInclusao;
import pessoas.view.InclusaoPessoaView;

public class InclusaoPessoaPresenter implements IConfiguraViewInclusao {

    Pessoas pessoas;
    private InclusaoPessoaView view;
    private File arquivo;

    public InclusaoPessoaPresenter(InclusaoPessoaView view) {

        try {
            pessoas = new Pessoas();
            this.view = view;
        } catch (FileNotFoundException ex) {
            arquivo = new File("src/pessoas/data/pessoas.txt");
            try {
                FileWriter w = new FileWriter(arquivo, true);
            } catch (IOException ex1) {
                JOptionPane.showMessageDialog(view, "Ocorreu um erro ao cria o arquivo pessoa.txt");
            }

        }
        view.getBtnSalvar().addActionListener(new java.awt.event.ActionListener() {

            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                try {
                    btnSalvarPessoa(evt);
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }

            }
        });
        view.getBtnFechar().addActionListener(new java.awt.event.ActionListener() {

            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelar();
            }
        });
        view.setLocationRelativeTo(view);
        view.setVisible(true);

    }

    private void btnSalvarPessoa(ActionEvent evt) throws Exception {
        String nome = view.getTxtNome().getText();
        String telefone = view.getTxtTelefone().getText();

        if ((!nome.equals("")) && (view.getTxtTelefone().isEditValid())) {
            Pessoa p = new Pessoa(nome, telefone);
            if (!Pessoas.getInstancia().add(p)) {
                throw new Exception("Pessoa já existente");
            } else {
                JOptionPane.showMessageDialog(view, nome + " cadastrado com sucesso!");
                view.getTxtNome().setText("");
                view.getTxtTelefone().setText("");
            }
        } else {
            throw new Exception("Você precisa informar os campos");
        }
    }

    private void cancelar() {
        view.dispose();
    }

    @Override
    public void configurarIncluirPresenter(Pessoa p) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
